
<template>
  <!--
  el-container : 容器组件
  - el-header : 头部
  - el-container
    - el-aside : 侧栏
    - el-main  : 内容部分

  -->
  <el-container class="container">
    <!-- 头部 -->
    <el-header class="header">
      <el-row>
        <el-col :span="8">
          <img src="../../assets/images/logo.png" alt>
        </el-col>
        <el-col :span="8">
          <h1>电商后台管理系统</h1>
        </el-col>
        <el-col class="right" :span="8">
          恭喜上海前端34期平均薪资15000
          <a @click.prevent="startLogout" href="#">退出</a>
        </el-col>
      </el-row>
    </el-header>
    <!-- 内容 -->
    <el-container>
      <!-- 左侧栏 -->
      <el-aside class="aside" width="200px">
        <!--
          el-menu : 菜单组件
            default-active="2" 根据index,指定默认高亮
            @open="handleOpen"  处理展开
            @close="handleClose" 处理关闭
            active-text-color="#ffd04b" 高亮颜色
          el-submenu : 子菜单组件 (可展开)
          el-menu-item : 子菜单组件 (不可展开)  可以放在 el-submenu里面

          menu 有个router属性,如果设置了 启动 vue-router 模式 , 下面的每个元素都和 声明式导航一样
                <router-link> , 将index 里 的值,作为 path 参与路由匹配
                1. router 属性加上   :router = 'true'
                2. 后面的 el-menu-item 里面的index 给个有意义的路径  index='/users'

        -->
        <el-menu
          :router="true"
          :default-active="$route.path"
          background-color="#545c64"
          text-color="#fff"
          active-text-color="#ffd04b"
        >
          <el-submenu :index="item1.id+''" v-for='item1 in menus' :key='item1.id'>
            <!-- 自定义标题 -->
            <template slot="title">
              <i class="el-icon-location"></i>
              <span>{{ item1.authName }}</span>
            </template>
            <!-- index="/users" -->
            <el-menu-item v-for='item2 in item1.children' :key='item2.id' :index="'/'+item2.path" >{{ item2.authName }}</el-menu-item>
          </el-submenu>

        </el-menu>
      </el-aside>
      <!-- 主体 -->
      <el-main class="main">
        <!-- 这里应该是 users roles rights 的出口 -->
        <router-view></router-view>
      </el-main>
    </el-container>
  </el-container>
</template>

<script>
export default {
  data () {
    return {
      // 菜单导航列表
      menus: []
    }
  },
  created () {
    this.loadMenusList()
  },
  methods: {
    /**
     * 退出功能
     */
    async startLogout () {
      try {
        await this.$confirm('此操作将永久退出账户, 是否继续?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        })
        // 点击确定的时候
        // 1. 把本地的token清除掉
        localStorage.removeItem('token')
        // 2. 跳转 login页面
        this.$router.push('/login')
        // 3. 提示退出成功
        this.$message({
          message: '退出成功',
          type: 'success',
          duration: 800
        })
      } catch (error) {
        // 取消退出
        this.$message({
          message: '取消退出',
          type: 'info'
        })
      }

      // this.$confirm('此操作将永久退出账户, 是否继续?', '提示', {
      //   confirmButtonText: '确定',
      //   cancelButtonText: '取消',
      //   type: 'warning'
      // })
      //   // 点击确定
      //   .then(() => {
      // // 1. 把本地的token清除掉
      // localStorage.removeItem('token')
      // // 2. 跳转 login页面
      // this.$router.push('/login')
      // // 3. 提示退出成功
      // this.$message({
      //   message: '退出成功',
      //   type: 'success',
      //   duration: 800
      // })
      //   })
      //   // 点击取消
      //   .catch(() => {
      //     this.$message({
      //       message: '取消退出',
      //       type: 'info'
      //     })
      //   })
    },
    handleOpen (key, keyPath) {
      console.log('打开了')
    },
    handleClose (key, keyPath) {
      console.log('关闭了')
    },
    /**
     * 获取用户的菜单列表
     */
    async loadMenusList () {
      let res = await this.$axios.get('menus')
      console.log(res)
      this.menus = res.data.data
    }
  }
}
</script>

<style lang='less'>
* {
  margin: 0;
  padding: 0;
}

html,
body,
#app {
  height: 100%;
}

.container {
  height: 100%;
  min-width: 950px;
}

/* 头部 */
.header {
  background: #b3c1cd;
  padding: 0;
  height: 60px;
  h1 {
    color: #fff;
    font-size: 28px;
    text-align: center;
    line-height: 60px;
  }
  .right {
    text-align: right;
    line-height: 60px;
    padding-right: 40px;
    a {
      color: #daa520;
    }
  }
}

/* 侧栏 */
.aside {
  background: #545c64;
}

/* main */
.main {
  background: #eaeef1;
}
</style>
